Learn PHP 8 Using MySQL, JavaScript, CSS3, and HTML5 — Second Edition — Steve Prettyman Learn PHP 8 Using MySQL, JavaScript, CSS3, and HTML5 Second Edition
Steve Prettyman Learn PHP 8: Using MySQL, JavaScript, CSS3, and HTML5
Steve Prettyman Key West, FL, USA
ISBN-13 (pbk): 978-1-4842-6239-9 ISBN-13 (electronic): 978-1-4842-6240-5 https://doi.org/10.1007/978-1-4842-6240-5 Copyright © 2020 by Steve Prettyman This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed. Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights. While the advice and information in this book are believed to be true and accurate at the date of publication, neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or omissions that may be made. The publisher makes no warranty, express or implied, with respect to the material contained herein. Managing Director, Apress Media LLC: Welmoed Spahr Acquisitions Editor: Steve Anglin Development Editor: Matthew Moodie Coordinating Editor: Mark Powers Cover designed by eStudioCalamar Cover image by Alvaro Pinot on Unsplash (www.unsplash.com) Distributed to the book trade worldwide by Apress Media, LLC, 1 New York Plaza, New York, NY 10004, U.S.A. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail [email protected], or visit www.springeronline.com. Apress Media, LLC is a California LLC and the sole member (owner) is Springer Science + Business Media Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a Delaware corporation. For information on translations, please e-mail [email protected]; for reprint, paperback, or audio rights, please e-mail [email protected]. Apress titles may be purchased in bulk for academic, corporate, or promotional use. eBook versions and licenses are also available for most titles. For more information, reference our Print and eBook Bulk Sales web page at www.apress.com/bulk-sales. Any source code or other supplementary material referenced by the author in this book is available to readers on GitHub via the book’s product page, located at www.apress.com/9781484262399. For more detailed information, please visit http://www.apress.com/source-code. Printed on acid-free paper This edition is dedicated to all essential workers throughout the world who have helped provide a more safe world from illness (pandemics) and other natural disasters. Your dedication makes the world a better place. You support the Key West, Florida (USA), motto of “One Human Family.” Table of Contents
About the Author ����������������������������������������������������������������������������������������������������� xi About the Technical Reviewer ������������������������������������������������������������������������������� xiii Acknowledgments ���������������������������������������������������������������������������������������������������xv Introduction �����������������������������������������������������������������������������������������������������������xvii
Chapter 1: An Introduction to PHP 8 ������������������������������������������������������������������������� 1 Chapter Objectives/Student Learning Outcomes �������������������������������������������������������������������������� 1 PHP 7, PHP 7.4+, PHP 8, and PHP.NET ������������������������������������������������������������������������������������������ 1 PHP Versions: PHP 7+, PHP 7.4+, and PHP 8+ ������������������������������������������������������������������������ 7 Do It ����������������������������������������������������������������������������������������������������������������������������������������� 9 PHP, JavaScript, CSS, HTML, and Apache Web Server ���������������������������������������������������������������� 10 Do It ��������������������������������������������������������������������������������������������������������������������������������������� 15 PHP, Apache, and MySQL/MariaDB ���������������������������������������������������������������������������������������������� 15 Do It ��������������������������������������������������������������������������������������������������������������������������������������� 21 Putting It All Together—PHP, Apache, and MySQL ����������������������������������������������������������������������� 21 easyPHP ��������������������������������������������������������������������������������������������������������������������������������� 22 XAMPP ����������������������������������������������������������������������������������������������������������������������������������� 27 Microsoft Internet Information Server ����������������������������������������������������������������������������������� 31 Do It ��������������������������������������������������������������������������������������������������������������������������������������� 31 Testing Your Environment ����������������������������������������������������������������������������������������������������������� 32 Testing Your Administration Environment ������������������������������������������������������������������������������ 32 Do It ��������������������������������������������������������������������������������������������������������������������������������������� 34 Testing Your PHP Environment ����������������������������������������������������������������������������������������������� 34 Do It ��������������������������������������������������������������������������������������������������������������������������������������� 37
v Table of Contents
Alias (Working) Directories ���������������������������������������������������������������������������������������������������������� 37 Do It ��������������������������������������������������������������������������������������������������������������������������������������� 40 Notepad++, Editors, and Code Testers ��������������������������������������������������������������������������������������� 40 Notepad++ ���������������������������������������������������������������������������������������������������������������������������� 41 Other Editors �������������������������������������������������������������������������������������������������������������������������� 41 Do It ��������������������������������������������������������������������������������������������������������������������������������������� 42 Chapter Terms ����������������������������������������������������������������������������������������������������������������������������� 42 Chapter Questions and Projects �������������������������������������������������������������������������������������������������� 43
Chapter 2: Interfaces, Platforms, and Three-Tier Programming ���������������������������� 47 Chapter Objectives/Student Learning Outcomes ������������������������������������������������������������������������ 47 PHP Platforms ����������������������������������������������������������������������������������������������������������������������������� 47 PHP, AJAX, and CSS—Web Applications �������������������������������������������������������������������������������� 48 PHP, AJAX, and CSS—Smart Phone Web Applications ���������������������������������������������������������� 56 PHP Three-Tier Architecture �������������������������������������������������������������������������������������������������������� 63 Do It ��������������������������������������������������������������������������������������������������������������������������������������� 65 Interface Tier ������������������������������������������������������������������������������������������������������������������������� 65 Do It ��������������������������������������������������������������������������������������������������������������������������������������� 67 Business Rules Tier ��������������������������������������������������������������������������������������������������������������� 68 Do It ��������������������������������������������������������������������������������������������������������������������������������������� 70 Data Tier �������������������������������������������������������������������������������������������������������������������������������� 70 Do It ��������������������������������������������������������������������������������������������������������������������������������������� 72 Putting It All Together ������������������������������������������������������������������������������������������������������������ 72 Case Study ����������������������������������������������������������������������������������������������������������������������������� 74 Do It ��������������������������������������������������������������������������������������������������������������������������������������� 80 MVC and Dependency Injection �������������������������������������������������������������������������������������������������� 80 Chapter Terms ����������������������������������������������������������������������������������������������������������������������������� 81 Chapter Questions and Projects �������������������������������������������������������������������������������������������������� 82
Chapter 3: The Basics: PHP 8 Syntax ��������������������������������������������������������������������� 89 Chapter Objectives/Student Learning Outcomes ������������������������������������������������������������������������ 89 The Basic Syntax ������������������������������������������������������������������������������������������������������������������������� 89 Do It ��������������������������������������������������������������������������������������������������������������������������������������� 98 vi Table of Contents
Conditional Statements ��������������������������������������������������������������������������������������������������������������� 98 Do It ������������������������������������������������������������������������������������������������������������������������������������� 108 Functions ���������������������������������������������������������������������������������������������������������������������������������� 109 Do It ������������������������������������������������������������������������������������������������������������������������������������� 115 Arrays ���������������������������������������������������������������������������������������������������������������������������������������� 116 Do It ������������������������������������������������������������������������������������������������������������������������������������� 121 Chapter Terms ��������������������������������������������������������������������������������������������������������������������������� 122 Chapter Questions and Projects ������������������������������������������������������������������������������������������������ 123
Chapter 4: Modular Programming ������������������������������������������������������������������������ 129 Chapter Objectives/Student Learning Outcomes ���������������������������������������������������������������������� 129 PHP Libraries, Extensions, Classes, and Objects ���������������������������������������������������������������������� 129 PHP Extensions ������������������������������������������������������������������������������������������������������������������������� 130 Classes and Objects ������������������������������������������������������������������������������������������������������������ 132 Creating a PHP Class ����������������������������������������������������������������������������������������������������������������� 133 Do It ������������������������������������������������������������������������������������������������������������������������������������� 140 Return Method �������������������������������������������������������������������������������������������������������������������������� 141 Do It ������������������������������������������������������������������������������������������������������������������������������������� 144 Set Methods ������������������������������������������������������������������������������������������������������������������������������ 145 Do It ������������������������������������������������������������������������������������������������������������������������������������� 153 Get Methods ������������������������������������������������������������������������������������������������������������������������������ 154 Do It ������������������������������������������������������������������������������������������������������������������������������������� 159 Constructor Method ������������������������������������������������������������������������������������������������������������������ 159 Do It ������������������������������������������������������������������������������������������������������������������������������������� 165 Chapter Terms ��������������������������������������������������������������������������������������������������������������������������� 166 Chapter Questions and Projects ������������������������������������������������������������������������������������������������ 167
Chapter 5: Secured User Interfaces ���������������������������������������������������������������������� 175 Chapter Objectives/Student Learning Outcomes ���������������������������������������������������������������������� 175 Secured User Interaction ���������������������������������������������������������������������������������������������������������� 175 HTML5 Form Validation ������������������������������������������������������������������������������������������������������������� 176 Do It ������������������������������������������������������������������������������������������������������������������������������������� 179
vii Table of Contents
PHP Filtering ����������������������������������������������������������������������������������������������������������������������������� 180 Do It ������������������������������������������������������������������������������������������������������������������������������������� 182 Additional HTML Input Security ������������������������������������������������������������������������������������������������� 182 HTML5 Select List Box and Radio Buttons �������������������������������������������������������������������������� 183 Do It ������������������������������������������������������������������������������������������������������������������������������������� 188 Validating Input with an XML File ���������������������������������������������������������������������������������������� 188 Dependency Injection ���������������������������������������������������������������������������������������������������������������� 194 Do It ������������������������������������������������������������������������������������������������������������������������������������� 212 Chapter Terms ��������������������������������������������������������������������������������������������������������������������������� 213 Chapter Questions and Projects ������������������������������������������������������������������������������������������������ 214
Chapter 6: Handling and Logging Exceptions ������������������������������������������������������� 219 Chapter Objectives/Student Learning Outcomes ���������������������������������������������������������������������� 219 Handling Exceptions ����������������������������������������������������������������������������������������������������������������� 220 Do It ������������������������������������������������������������������������������������������������������������������������������������� 229 Exception and Error Handling vs. If/Else Conditions ����������������������������������������������������������������� 229 Do It ������������������������������������������������������������������������������������������������������������������������������������� 239 Logging Exceptions ������������������������������������������������������������������������������������������������������������������� 239 Do It ������������������������������������������������������������������������������������������������������������������������������������� 248 Reading Log and Text Files ������������������������������������������������������������������������������������������������������� 248 Do It ������������������������������������������������������������������������������������������������������������������������������������� 258 Chapter Terms ��������������������������������������������������������������������������������������������������������������������������� 259 Chapter Questions and Projects ������������������������������������������������������������������������������������������������ 260
Chapter 7: Data Objects ���������������������������������������������������������������������������������������� 265 Chapter Objectives/Student Learning Outcomes ���������������������������������������������������������������������� 265 The Data Class �������������������������������������������������������������������������������������������������������������������������� 265 JSON Data ��������������������������������������������������������������������������������������������������������������������������������� 280 MySQL and NoSQL Data with MySQL 8+ ���������������������������������������������������������������������������������� 281 Do It ������������������������������������������������������������������������������������������������������������������������������������� 284 Backup and Recovery ��������������������������������������������������������������������������������������������������������������� 284 JSON Backup and Recovery ������������������������������������������������������������������������������������������������������ 302 viii Table of Contents
MySQL Backup and Recovery ��������������������������������������������������������������������������������������������������� 303 Do It ������������������������������������������������������������������������������������������������������������������������������������� 307 Connecting the Data Tier ����������������������������������������������������������������������������������������������������������� 308 Do It ������������������������������������������������������������������������������������������������������������������������������������� 315 Chapter Terms ��������������������������������������������������������������������������������������������������������������������������� 316 Chapter Questions and Projects ������������������������������������������������������������������������������������������������ 317
Chapter 8: Authentication ������������������������������������������������������������������������������������� 321 Chapter Objectives/Student Learning Outcomes ���������������������������������������������������������������������� 321 Verification and Sessions ���������������������������������������������������������������������������������������������������������� 321 JSON Data ��������������������������������������������������������������������������������������������������������������������������������� 334 MySQL Data ������������������������������������������������������������������������������������������������������������������������������ 334 Do It ������������������������������������������������������������������������������������������������������������������������������������� 335 Registration ������������������������������������������������������������������������������������������������������������������������������� 336 JSON Data ��������������������������������������������������������������������������������������������������������������������������������� 340 MySQL Data ������������������������������������������������������������������������������������������������������������������������������ 341 Logging In ��������������������������������������������������������������������������������������������������������������������������������� 342 JSON Data ��������������������������������������������������������������������������������������������������������������������������������� 349 MySQL Data ������������������������������������������������������������������������������������������������������������������������������ 349 Change Password ��������������������������������������������������������������������������������������������������������������������� 350 JSON Data ��������������������������������������������������������������������������������������������������������������������������������� 356 MySQL Data ������������������������������������������������������������������������������������������������������������������������������ 356 Do It ������������������������������������������������������������������������������������������������������������������������������������� 356 Chapter Terms ��������������������������������������������������������������������������������������������������������������������������� 357 Chapter Questions and Projects ������������������������������������������������������������������������������������������������ 357
Chapter 9: Multifunctional Interfaces ������������������������������������������������������������������� 361 Chapter Objectives/Student Learning Outcomes ���������������������������������������������������������������������� 361 The Complete Application ��������������������������������������������������������������������������������������������������������� 361 Data Handling Using JavaScript ������������������������������������������������������������������������������������������������ 362 Do It ������������������������������������������������������������������������������������������������������������������������������������� 380
ix Table of Contents
Updating, Deleting, and Inserting in the Interface Tier �������������������������������������������������������������� 380 Do It ������������������������������������������������������������������������������������������������������������������������������������� 390 Updating, Deleting, and Inserting in the Business Rules Tier ���������������������������������������������������� 390 Do It ������������������������������������������������������������������������������������������������������������������������������������� 399 Final Touches ���������������������������������������������������������������������������������������������������������������������������� 399 Do It ������������������������������������������������������������������������������������������������������������������������������������� 410 ABC Canine Shelter Reservation System Logical Design ���������������������������������������������������������� 411 Limitations/Suggestions ������������������������������������������������������������������������������������������������������ 412 Chapter Terms ��������������������������������������������������������������������������������������������������������������������������� 415 Chapter Questions and Projects ������������������������������������������������������������������������������������������ 415
Index ��������������������������������������������������������������������������������������������������������������������� 419
x About the Author
Steve Prettyman earned his bachelor of arts degree in education from Oglethorpe University in 1979. He quickly began his teaching career as a high-school mathematics instructor while continuing his education by earning a master’s degree in business information systems from Georgia State University (1985). Since then, Steve has spent over 30 years in the IT industry. He has also been a professor at Chattahoochee Technical College, Kennesaw State University, and Southern Polytechnic State University for over 25 years. His primary teaching responsibilities include programming, web design, and web application development. Steve, his wife Beverly, and their two dogs (Pixee and Buster) currently reside in Paradise (Key West, Florida).
xi About the Technical Reviewer
Satej Kumar Sahu works in the role of Senior Enterprise Architect at Honeywell. He is passionate about technology, people, and nature. He believes through technology and conscientious decision making, each of us has the power to make this world a better place. In his free time, he can be seen reading books, playing basketball, and having fun with friends and family.
xiii Acknowledgments
Thank you to everyone who has helped put this book together. Special thanks to the Introduction to PHP classes that have been the true testers and debuggers for this journey. Special acknowledgment to all the open source developers and providers of free tutorials and training to every Internet user who wants to learn more about programming.
xv Introduction
Learn PHP 8: Using MySQL, JavaScript, CSS3, and HTML5 is intended for use as a beginner- and intermediate-level programming book. It is not the goal of this book to cover advanced techniques in the current versions of the PHP programming language. Some knowledge of general programming concepts is expected, but no actual programming experience or education is assumed. All code examples in this book are compatible with PHP 8. Most examples are compatible with PHP 7. The newest (as of the publication date) methods (functions) available in PHP have been used to provide the reader with the most current coding techniques. The examples use core methods provided in the PHP language. PHP includes many additional methods to accomplish similar tasks. The reader may, and should, research additional ways of improving security, performance, and other techniques. It is the goal of this book to prompt users to always consider using the most secure and efficient methods of program development. The code in this book provides some examples of using these techniques. The user should remember that no program is 100% secure. The programmer can only strive to make an application as secure as possible. It takes a team of developers, network personnel, security administrators, data center personnel, and others working together to provide the safest environment.
A Different Approach
There are quite a number of PHP books on the market today. What makes this book any different than others? • This book uses the concept of “learning by doing,” which shows the reader how to develop applications with conditional statements, loops, arrays, and methods. Over 70 PHP methods (functions) are introduced and demonstrated in coding examples. • Very early in the book, the reader is introduced to object-oriented (OO) programming techniques. Many other books only briefly cover OO programming (if at all) in the final chapters.
xvii Introduction
• Object-oriented set methods are used to verify and filter user input. Many other books simply show a set method accepting data and storing it. • A major objective of the book is to convince the reader to create all programs as secure and efficient as possible. The newest password encryption techniques (password_hash) are demonstrated. • The try and catch methods are introduced to capture exceptions and some errors. The newest versions of PHP have been created to handle exceptions and errors using this approach. • Multitier program design is introduced in the early chapters. This allows the reader to discover what logic and coding should take place in each tier. Many PHP books do not even cover this topic. • The majority of the examples in the book are used to develop one main application (ABC Canine Shelter Reservation System). As the book progresses, the application is built from the beginning, in stages, showing the reader that application development should be broken into stages. Only after each stage is completed and tested can the next stage begin. This approach works hand in hand with multitier design. Additional programming exercises and a term project are provided to enhance the understanding of development. • The creation of user, change, and error logs are introduced. This allows the reader to gain an understanding of how to provide backup and recovery ability to keep an application functioning properly when security breaches or exceptions occur. • The introduction of data objects and the data tier demonstrates to the reader the importance of creating an application that provides the ability to change data storage techniques and data storage location without requiring a major rewrite of the application. XML, JSON, and MySQL examples are provided.
• A natural relationship between PHP, HTML5, CSS3, and JavaScript is demonstrated throughout the book. This relationship is one of the major strengths of PHP. xviii Introduction
• Throughout the book, web links are provided to point the user to additional resources to help understand the material or to dig deeper into the subject matter. Updates to link locations are provided on the book’s web site.
Special Note for Teachers
The design of the content of this book provides flexibility in teaching styles and approaches. Each college and university approaches the initial education of programming concepts in different ways. This book provides three different types of programming exercises, which allow teachers to pick and choose what would work best in their environment. “Do It” exercises are provided in each chapter to allow the student to gain hands-on experience with techniques shown by modifying existing examples to produce the desired results. These exercises provide a level of confidence before the student attempts to program exercises at the end of the chapters. In addition, a term project is provided that builds an application that uses the same types of algorithms and programming techniques shown in the book.
Code Examples, Images, and Links
Every effort has been made to catch any errors in code (and grammar). Please let us know if/when you discover problems in this book. Please send all corrections to Steve Prettyman ([email protected]). All code examples, images, and links are available via the Download Source Code link on the book’s product page, located at www.apress.com/9781484262399 and the following location. Copying code from the book may cause errors due to format requirements for publishing.
Chapter Overview Chapter 1: An Introduction to PHP 8
After completing this chapter, the student will be able to • Understand the difference between LAMP, WAMP, and MAMP • Successfully install a version of LAMP, WAMP, or MAMP xix Introduction
• Search the Internet for troubleshooting problems • Explain the difference between a programming language and a scripting language • Create an error-free simple PHP program
Chapter 2: Interfaces, Platforms, and Three-Tier Programming
After completing this chapter, the student will be able to • Give examples of platforms or containers that can host PHP programs • Create a simple, dynamic web application using PHP • Explain three-tier design and determine what is contained in each tier • Design a three-tier application • Explain each step of the program development life cycle (PDLC) • Define and explain MVC and dependency injection
Chapter 3: The Basics: PHP 8 Syntax
After completing this chapter, the student will be able to • Create a simple, error-free PHP program • Understand the use and value of conditional statements • Understand the use and value of for, while, and foreach loops • Understand the use and value of functions • Understand the use and value of arrays
xx Introduction Chapter 4: Modular Programming
After completing this chapter, the student will be able to • Create an error-free, simple objected-oriented (OO) modular PHP program • Create a PHP class and make an instance of the class (object)
• Create an OO PHP encapsulated program, including get and set methods • Create PHP methods (functions) that accept parameters and return information • Create PHP public and private properties (variables) • Import existing PHP code from another file or library into a program • Validate information received using ternary (conditional) operators
Chapter 5: Secured User Interfaces
After completing this chapter, the student will be able to • Explain why user input must be validated in the interface and business rules tiers • Explain why user input must be filtered in the business rules tier • Use HTML5 code to validate user input • Use JavaScript code to validate user input
• Use PHP if statements (conditional statements) to validate and filter input
• Use the foreach loops to dynamically create an HTML select box from an XML file • Use simple arrays for filtering and validation • Pass simple arrays into methods (functions) • Understand how to use dependency injection to control code version changes
xxi Introduction Chapter 6: Handling and Logging Exceptions
After completing this chapter, the student will be able to • Explain the difference between errors and exceptions • Create a PHP program that can handle general exceptions • Create a PHP program that can create, raise, and handle user exceptions
• Explain and use a switch and/or embedded if/else statement • Create a PHP program that uses the while loop and/or the for loop • Create a program that reads/updates a text file using a two-dimensional array • Create a PHP program that logs exceptions and emails support personnel
Chapter 7: Data Objects
After completing this chapter, the student will be able to • Create a data class that inserts, updates, and deletes XML or JSON data • Explain how to create a data class that updates MySQL Data using a SQL Script
• Create a PHP program that creates a change backup log • Create a PHP program that can recover data from a previous backup • Apply changes to create up-to-date valid information • Use dependency injection to attach a data class to another class in the BR tier • Create a three-tier PHP application
xxii Introduction Chapter 8: Authentication
After completing this chapter, the student will be able to • Define sessions and explain how they are used for authentication • Create a PHP program that authenticates user logon • Create a PHP program that registers users • Create a PHP program that will allow users to change their passwords • Create a PHP program that logs invalid login attempts
Chapter 9: Multifunctional Interfaces
After completing this chapter, the student will be able to • Create a complete PHP application that deletes, updates, and inserts data • Create a professional look to a completed application using CSS • Use JavaScript to accept and manipulate data from another program • Secure all programs within an application requiring user IDs/passwords • Populate HTML objects with values from a JSON object
xxiii CHAPTER 1
An Introduction to PHP 8
PHP is a popular general-purpose scripting language that is especially suited to web development. Fast, flexible, and pragmatic, PHP powers everything from your blog to the most popular web sites in the world. —www.php.net
Chapter Objectives/Student Learning Outcomes
After completing this chapter, the student will be able to • Understand the differences between LAMP, WAMP, and MAMP • Successfully install a version of LAMP, WAMP, or MAMP • Search the Internet for troubleshooting problems • Explain the difference between a programming language and a scripting language • Create an error-free simple PHP program
PHP 7, PHP 7.4+, PHP 8, and PHP.NET
Today, PHP (Hypertext Preprocessor) is one of the most popular languages used for web application development. The language has evolved to allow the programmer to quickly develop well-formed error-free programs using both procedural and objected-oriented programming techniques. It provides the ability to use many preexisting libraries of code that either come with the basic installation or can be installed within the PHP environment. This gives you multiple ways to complete a particular task. It provides more flexibility than many other languages. The ease with which additional libraries of code can be added to the environment is one of the many driving forces in its popularity.
1 © Steve Prettyman 2020 S. Prettyman, Learn PHP 8, https://doi.org/10.1007/978-1-4842-6240-5_1 Chapter 1 An Introduction to PHP 8
Procedural language—A procedural programming language includes functions/methods that can be called from the main flow of the program. The flow of the program jumps to the function/ method, executes the code within the module, and then returns to the next statement in the main flow of the program. Some procedural languages include a main function/method that automatically is called when the program is executed. Object-oriented language—An object-oriented language uses classes and objects. Classes are similar to blueprints. A class describes what an object can contain, including properties/ variables and functions/methods. An object is an instance of a class (like a building that has been created from a blueprint). Object- oriented languages provide polymorphism, encapsulation, and inheritance. Objects are naturally encapsulated by containing all related functions/methods and properties/variables within the object itself. Polymorphism allows duplicate method/function names within object-oriented objects. However, the “signature” must be different. The “signature” is the combination of the types of variables (numbers and characters) passed into the method/ function and the type of information passed out of a method/ function. For example, several add methods could be created— one that only accepts integers (whole numbers), one that only accepts floating-point numbers (numbers with decimals), and one that accepts a combination. The program will determine which method/function to call by what has been passed into the method/ function. Inheritance in object-oriented programming allows an object to inherit properties/variables and functions/methods from another object. The object can also override those items inherited. This is similar to a child inheriting characteristics from the parents. Object-oriented languages can also be event driven. An event- driven program will “sleep” until an event occurs. This is similar to an ATM machine program waiting for a user to input an ATM card or walk in front of the machine.
2 Chapter 1 An Introduction to PHP 8
PHP is an open source language. As such, each version of the language is created using input from the individuals who use it—the programmers themselves. This allows the language, over time, to evolve and float into the direction that is driven by the users. From its first release in 1995 as a Personal Home Page Tool (PHP) by Rasmus Lerdorf, the versions have been released on the Internet with forums to provide users the ability to make suggestions and even provide code changes and additions. Today, www.php.net is the official PHP web site. Open source language—An open source programming language is developed by a community of interested parties. The community accepts input from fellow programmers for suggested upgrades and corrections. Several members of the community work together to present proposals and to make changes to the language. Open source languages are “free.” A non-open source language (such as Microsoft C#) is created and updated by a company or major organization. Non-open source languages are not usually “free.”
Figure 1-1. PHP.NET (03/28/2020)
The www.php.net home page provides information on each of the latest releases of the language. It also provides information on future releases, the features planned for those releases, and the planned release dates. In addition, other related PHP information can be found, including links and information to major PHP conferences.
3 Chapter 1 An Introduction to PHP 8
Figure 1-2. Get involved (03/28/2020)
As mentioned, this site provides the ability for users to help with the future development of the language. Users can get involved with testing beta versions and reporting errors or program bugs. Visitors can also view documentation related to the development of possible future versions. This is a good way of discovering future enhancements or security fixes before major announcements have been made to the public.
Figure 1-3. Download page (03/28/2020)
The download page, as you might have guessed, provides the ability to gain easy access to the latest versions of the language. However, as you will note, only the language itself is provided. It is more common, and recommended, that the beginning user use a WAMP (Windows, Apache, MySQL/MariaDB, PHP), LAMP (Linux, Apache, MySQL/ MariaDB, PHP), or MAMP (Mac, Apache, MySQL/MariaDB, PHP) stack package for initial installation. These packages (which we will look at later) allow for easy installation of multiple products at the same time. Otherwise, you have to run many separate installations. 4 Chapter 1 An Introduction to PHP 8
WAMP/LAMP/MAMP—Open source (free) combinations, including Apache web server, MySQL/MariaDB, and PHP for a specific operating system (Windows, Linux, and Mac). These packages are open source. The combination of software is used for creating dynamic web sites and web applications.
Figure 1-4. Documentation pages (03/28/2020)
One of the more important pages of the PHP web site is the documentation page. This page allows users to search for descriptions and functionality of the language itself. You can also download the complete documentation. However, since this is a “live” site, with possible changes occurring, the most current information is best obtained by directly accessing it from the web site.
Figure 1-5. The Manual (03/28/2020)
5 Chapter 1 An Introduction to PHP 8
You can use the manual as if it were a textbook by clicking through each link from the beginning. The limited amount of explanation provided with each section of the manual might cause a beginner to want to give up on programming and change interests to something ghastly like networking! The manual does provide a great guide for experienced programmers, as the syntax of the language is similar to other languages such as Python, JavaScript, Perl, and Java.
Figure 1-6. Search (03/28/2020)
On any page of the web site, the user can enter a term, an expression, or even a function name to find more information. As the information is entered in search box, the web page will provide the user with one or more options below the box for the user to select.
Figure 1-7. echo (03/28/2020)
6 Chapter 1 An Introduction to PHP 8
Once the user has selected an option (such as echo shown in Figure 1-7), the results of the search provide the user with a general description of the item requested, any inputs or outputs for a function (parameters), and example code.
Figure 1-8. echo code (03/28/2020)
The example code provides explanations of the use of the function within the code itself by using comments (indicated by the // and gold color in Figure 1-8). The comments are not executable code. The executable code is color-coded to highlight strings (red), variables (blue), keywords (green), and the PHP opening and closing tags (blue). Color-coding helps make the code more readable. It also can make it easier to find syntax errors when creating programs. Many PHP editors provide similar color schemes.
PHP Versions: PHP 7+, PHP 7.4+, and PHP 8+
With the release of the PHP 7 environment, great improvements took place, including major security upgrades and major performance improvements.
PHP 7 is based on the PHPNG project (PHP Next-Gen), that was led by Zend to speed up PHP applications. The performance gains realized from PHP 7 are huge! They vary between 25% and 70% on real-world apps, and all of that just from upgrading PHP, without having to change a single line of code! —www.zend.com
7 Chapter 1 An Introduction to PHP 8
PHP 7 also replaces fatal errors, which previously would crash a program, with exceptions that can be handled within the program itself. PHP 7 added many additional features, including type declarations for classes and functions, and a spaceship operator. In addition to bug fixes and security enhancements, PHP 7.4 introduced the spread operator which provides much better performance for merging arrays than array_ merge. The preload of functions and classes available in PHP 7.4 greatly increases PHP performance on heavy used systems. Any preloaded items are already resident in the web server and can immediately be executed. They stay resident as long as the sever is running. Arrow functions have been introduced to provide easier use of anonymous functions. Type declarations in class properties have also been improved and expanded. The order of preference for concatenation of strings and numbers has been adjusted to reduce error situations.
Before PHP 7.5, this statement would produce a nonnumeric value error when evaluated from left to right. After PHP 7.5, the two values on the right ($num1 and $num2) are first added and then the resulting number and string will be concatenated to produce “Hello 3” With the rollout of 5G Internet speeds and real-time results promised by our ISP providers, PHP must again increase speed and performance. While PHP 7 and PHP 7.4 greatly improved execution times over previous versions, PHP developers of large- scale systems, like Facebook, demanded even more efficiencies. Before PHP 8, these developers had to decide between compiling PHP 7 as it was originally designed and using Facebook’s HHVM (Hip Hop Virtual Machine) which converts PHP code into C++ code which can then be executed for better performance. With the introduction of PHP 8, code is compiled using a JIT (just-in-time) compiler. This technique has been used for many years in other languages, such as Java. Code compiled with JIT will initially be transformed into opcode. When the opcode is executed, it transitions into executable machine-level code. This change in combination with the preloaded classes and functions introduced in PHP 7.4 dramatically increases
8 Chapter 1 An Introduction to PHP 8
code efficiency and speed. So much so that some developers may now begin to look at using PHP for more than just web applications! Game developers may finally look at PHP as a legit development platform! In addition, PHP 8 introduces union types and static return types. It builds upon PHP 7.4’s introduction of weak references and allows a weakmap relationship with objects to allow them to remain in memory without being destroyed by the server’s garbage collector. The str_contains function (finally) allows us to search more efficiently for contents in a string. Internal function errors now behave in the same way as user-defined function errors. The @ operator, which you may have seen in older PHP code, is removed. To stop errors from being displayed, you must set this feature within your server. If you are migrating from a previous version of PHP to PHP 8, please review the migration notes in the appendix of the online manual:
http://php.net/manual/ The code used in the examples in this book are compatible with PHP 8. Most examples are also compatible with PHP 7 and PHP 7.4.
Do It
1. Go to www.php.net. Search for information on the print and printf functions. How are these functions similar? How are they different? 2. How do you “join the team” and help with the creation of the next version of PHP? Hint: Go to www.php.net and search for the answer. 3. Which ways can the www.php.net web site be useful for a beginning PHP programmer? 4. What language is used to create PHP? Hint: The answer is somewhere on the www.php.net web site. 5. Go to www.php.net. Search for the list of improvements and changes with PHP 8. List those improvements and changes. Which of these do you think will affect a beginner-level programmer? What changes have occurred since the initial release of PHP 8?
9 Chapter 1 An Introduction to PHP 8 PHP, JavaScript, CSS, HTML, and Apache Web Server
PHP is a scripting language. A scripting language is different than an actual programming language. Programming languages (such as Java) are written by the programmer in an English-like syntax. The program is compiled, which means it is converted from the English syntax into machine (executable) code (0s and 1s). This code is then executed (run) within a compatible operating system and hardware. The first- time code is accessed, Scripting languages interpreted commands line by line. They do not precompile the code before initial execution. You may wonder if this causes the code to be slower than compiled code. The answer is no. In PHP 8, the code is first transformed into opcode, which can quickly be transformed into efficient machine-level (executable) code. The executable code can, optionally, stay in the memory of the computer, or server, for other executions. If the programmer changes this code, a new version can replace the previous version in memory. Although, this may require rebooting the web server to take effect. JavaScript is also a scripting language. As you may be aware, JavaScript code can be seen within a web browser by viewing the source, as shown in Figure 1-9.
Figure 1-9. JavaScript, HTML, and CSS code from yahoo.com (04/01/20)
The source code displayed in Figure 1-9 is from www.yahoo.com, and it shows a combination of several languages, including HTML, CSS, and JavaScript. The JavaScript code is located between script tags ().
10 Chapter 1 An Introduction to PHP 8
Figure 1-10. The www.php.net source code (04/01/20)
However, when we look at the www.php.net source code (in Figure 1-10), we cannot see any PHP script code. There are links to some PHP files present, but no actual PHP code is displayed. Why? JavaScript code is downloaded to the user’s computer. It is interpreted and executed within the browser. PHP code resides on a web server. The code is also interpreted and executed, but within the web server, not by the browser. The results of executing the PHP code are returned to the browser, not to the actual code itself. PHP returns statements the browser can interpret, such as JavaScript, HTML, and CSS code.
Note You may notice other formats for using PHP (such as <%, <%=, %>, or
PHP Ajax Demo
"Watch it!!"
The words below will be replaced by "Hello World" which is pulled from the 'myfirstprogram.php' file via AJAX.